home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / misc / amag / AM9411_6.lha / XASS 64 / XAss 1.0 / Include / Basic-Start.inc < prev    next >
Text File  |  1992-10-31  |  3KB  |  58 lines

  1.          ; ***************************
  2.          ; ***   Basic-Start.inc   ***
  3.          ; ***************************
  4.  
  5. ; DIESE DATEI DARF NIE BEDINGT EINGEBUNDEN WERDEN!
  6. ; Als Anwendungsbeispiel siehe "Transfer.src".
  7.  
  8. ; Includedatei für CrossAss V1.0. Generiert Basic-Kopf für Assembler-
  9. ; programme, so daß diese wie Basicprogramme mit LOAD "...",8 geladen und mit
  10. ; RUN gestartet werden können. Benötigt "C64.con" als Konvertierungstabelle.
  11. ; Vor der Einbindung dieser Datei müssen im aufrufenden Programm,
  12. ; das den Basic-Kopf bekommen soll, einige Vorbereitungen getroffen werden:
  13. ; 1. Es muß ein ".base"-Pseudo-Opcode vor der Einbindung die Startadresse
  14. ;    auf 2049 (=$801) setzen (Basicanfang). Sollte der Programmcounter beim
  15. ;    Einbinden der Datei nicht 2049 sein, so wird ein Fehler erzeugt, der
  16. ;    die Assemblierung abbricht (Division durch 0).
  17. ; 2. Das Definition des Label "BS_Return" bestimmt das Aussehen des zu
  18. ;    erzeugenden Basic-Kopfes:
  19. ;    BS_Return nicht definiert:
  20. ;        <Zeilennr> sys <startadr> <Text>
  21. ;    BS_Return definiert:
  22. ;        <Zeilennr> sys <startadr>:rem <Text>
  23. ;    Soll aus dem laufenden Programm zum Basicinterpreter per RTS
  24. ;    zurückgesprungen werden, muß NoReturn definiert sein, da der 
  25. ;    angefügte Kommentarstext sonst einen "?SYNTAX ERROR" hervorrufen
  26. ;    würde. Der eigentliche Wert von BS_Return hat keinen Einfluß.
  27. ; 3. Das Label "BS_Line" bestimmt die Zeilennr. des Basic-Kopfs
  28. ; 4. Der Einsprung im Hauptprogramm muß durch das Label "BS_Start"
  29. ;    gekennzeichnet sein (Diese Adresse erscheint dann hinter dem SYS-Befehl)
  30. ; 5. Zur Angabe eines Kommentarstext (z.B. einer Copyright-Meldung) wie in
  31. ;    obigen Schemata, muß ein Makro "BS_Text" definiert werden, das nur ein
  32. ;    ".ASCII"-Pseudo-Opcode mit dem entsprechenden Text enthält.
  33.  
  34.                   .if   !,*,2049       ;PC ungleich 2049 ?
  35.                      .if   !,1/0,1     ;Fehler (in Pass 1) erzeugen
  36.                      .endif            ;Dummy-IF schließen
  37.                   .endif               ;PC = 2049 -> weiter
  38.  
  39.                   .word Line2          ;Adresse nächste Zeile
  40.                   .word BS_Line        ;Zeilennummer
  41.                   .byte 158            ;Token SYS-Befehl
  42.                   .byte 32             ;Leerzeichen
  43.                                        ;Startadresse in ASCII wandeln
  44.                   .byte BS_Start/10000+'0
  45.                   .byte BS_Start/1000-BS_Start/10000*10+'0
  46.                   .byte BS_Start/100-BS_Start/1000*10+'0
  47.                   .byte BS_Start/10-BS_Start/100*10+'0
  48.                   .byte BS_Start-BS_Start/10*10+'0
  49.  
  50.                   .if   =,BS_Return    ;BS_Return definiert ?
  51.                      .byte ':          ;Doppelpunkt einfügen
  52.                      .byte 143         ;Token REM-Befehl
  53.                   .endif
  54.                   .byte 32             ;Leerzeichen einfügen
  55.                   BS_Text              ;Makroaufruf: Text einfügen
  56.  
  57. Line2             .byte 0,0,0          ;Zeilenendemarkierung
  58.